const { contextBridge, ipcRenderer } = require('electron');

contextBridge.exposeInMainWorld('electronAPI', {
    versions: {
        chrome: process.versions.chrome,
        node: process.versions.node,
        electron: process.versions.electron
    },
    // 创建常规子窗
    createSubWindow: () => {
        ipcRenderer.send('create-sub-window');
    },
    // 创建悬浮窗
    createFloatWindow: () => {
        ipcRenderer.send('create-float-window');
    },
    // 打印功能
    print: () => {
        ipcRenderer.send('print');
    },
    // 获取电池电量
    getBatteryLevel: () => {
        return ipcRenderer.invoke('get-battery-level');
    },
    // 监听电池状态变化
    onBatteryStatusChange: (callback) => {
        ipcRenderer.on('battery-status-changed', (event, batteryInfo) => {
            callback(batteryInfo);
        });
    },
    // 移除电池状态监听
    removeBatteryStatusListener: () => {
        ipcRenderer.removeAllListeners('battery-status-changed');
    },
    // 显示通知
    showNotification: (options) => {
        return ipcRenderer.invoke('show-notification', options);
    },
    // 关闭通知
    closeNotification: (notificationId) => {
        ipcRenderer.send('close-notification', notificationId);
    },
    // 监听通知点击事件
    onNotificationClick: (callback) => {
        ipcRenderer.on('notification-clicked', (event, notificationId) => {
            callback(notificationId);
        });
    },
    // 移除通知点击监听
    removeNotificationClickListener: () => {
        ipcRenderer.removeAllListeners('notification-clicked');
    },
    // 选择单个文件
    selectFile: (options) => {
        return ipcRenderer.invoke('select-file', options);
    },
    // 选择多个文件
    selectFiles: (options) => {
        return ipcRenderer.invoke('select-files', options);
    },
    // 选择文件夹
    selectFolder: (options) => {
        return ipcRenderer.invoke('select-folder', options);
    },
    // 保存文件
    saveFile: (options) => {
        return ipcRenderer.invoke('save-file', options);
    },
    // 读取文件内容
    readFile: (filePath, encoding) => {
        return ipcRenderer.invoke('read-file', filePath, encoding);
    },
    // 获取WiFi信息（已注释）
    // getWiFiInfo: () => {
    //     return ipcRenderer.invoke('get-wifi-info');
    // },
    // 获取IP地址
    getIPAddresses: () => {
        return ipcRenderer.invoke('get-ip-addresses');
    },
    // 获取充电状态
    getChargingStatus: () => {
        return ipcRenderer.invoke('get-charging-status');
    },
    // 监听充电状态变化
    onChargingStatusChange: (callback) => {
        ipcRenderer.on('charging-status-changed', (event, status) => {
            callback(status);
        });
    },
    // 移除充电状态监听
    removeChargingStatusListener: () => {
        ipcRenderer.removeAllListeners('charging-status-changed');
    },
    // 保存图片（从base64数据）
    saveImage: (base64Data, defaultFileName) => {
        return ipcRenderer.invoke('save-image', base64Data, defaultFileName);
    },
    // 保存音频文件
    saveAudio: (base64Data, defaultFileName, mimeType) => {
        return ipcRenderer.invoke('save-audio', base64Data, defaultFileName, mimeType);
    },
    // 捕获当前窗口截图
    captureWindow: () => {
        return ipcRenderer.invoke('capture-window');
    },
    // 获取屏幕源
    getScreenSources: () => {
        return ipcRenderer.invoke('get-screen-sources');
    },
    // 捕获屏幕截图
    captureScreen: (sourceId) => {
        return ipcRenderer.invoke('capture-screen', sourceId);
    },
    // 启动区域选择截图
    startRegionSelect: () => {
        return ipcRenderer.invoke('start-region-select');
    },
    // 完成区域选择
    completeRegionSelect: (region) => {
        return ipcRenderer.invoke('complete-region-select', region);
    },
    // 取消区域选择
    cancelRegionSelect: () => {
        return ipcRenderer.invoke('cancel-region-select');
    },
    // 监听区域选择完成（在主窗口）
    onRegionSelected: (callback) => {
        // 移除旧的监听器，避免重复
        ipcRenderer.removeAllListeners('region-selected');
        ipcRenderer.on('region-selected', (event, result) => {
            callback(result);
        });
    },
    // 移除区域选择监听
    removeRegionSelectedListener: () => {
        ipcRenderer.removeAllListeners('region-selected');
    },
    // 监听区域选择初始化（在区域选择窗口）
    onRegionSelectInit: (callback) => {
        ipcRenderer.on('region-select-init', (event, data) => {
            callback(data);
        });
    },
    // 移除区域选择初始化监听
    removeRegionSelectInitListener: () => {
        ipcRenderer.removeAllListeners('region-select-init');
    },
    // 创建浏览器窗口
    createBrowserWindow: (initialUrl) => {
        return ipcRenderer.invoke('create-browser-window', initialUrl);
    },
    // 浏览器窗口导航
    browserNavigate: (windowId, url) => {
        return ipcRenderer.invoke('browser-navigate', windowId, url);
    },
    // 浏览器窗口后退
    browserGoBack: (windowId) => {
        return ipcRenderer.invoke('browser-go-back', windowId);
    },
    // 浏览器窗口前进
    browserGoForward: (windowId) => {
        return ipcRenderer.invoke('browser-go-forward', windowId);
    },
    // 浏览器窗口刷新
    browserReload: (windowId) => {
        return ipcRenderer.invoke('browser-reload', windowId);
    }
});
